import java.util.Scanner;

/*public class Test {*/
    /*public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            int z = scanner.nextInt();
            Sub sub = new Sub(x, y, z);
            System.out.println(sub.calculate());

        }
    }
}
class Base {

      private int x;
      private int y;

    public Base(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

}

class Sub extends Base {

    private int z;

    public Sub(int x, int y, int z) {
       super(x,y);

       this.z=z;
        //write your code here
    }

    public int getZ() {
        return z;
    }

    public int calculate() {
        return super.getX() * super.getY() * this.getZ();
    }*/

//}
/*
public class Test{

    private String name = "Person";

    int age=0;

}

public class Child extends Test{

    public String grade;

    public static void main(String[] args){

        Test p = new Child();

        System.out.println(p.name);

    }

}*/
/*
继承相关知识：
1 当子类和父类是同名的成员变量的时候，在子类中访问这个成员变量，访问的是子类自己，优先访问子类的，（如果一定要访问父类，此时应该使用super关键字）
2 this访问的时候，不仅可以访问父类，也可以访问子类，当this访问父类和子类同名的成员和方法时，子类优先访问，super只能访问从父类继承过来的变量。
3 在子类构造方法中，并没有写任何关于父类的构造代码，但是在子类构造对象时，先执行父类的构造方法，在执行子类的构造方法。（原因是子类对象中的成员有
俩部分，继承父类继承下来的和子类新加的部分，父子父子有父才有子，所以在构造子类对象时，先调用父类的构造方法，将继承下来的成员构造完整，在继承子类
自己的构造方法，将子类自己新增的成员初始化完整)
4 注意若父类没有定义构造方法，在子类构造方法中第一行默认有隐含的super（）调用，掉要父类的构造方法。若父类构造方法是带有参数的，此时需要用户为子
类显示定义构造方法，并在子类中选择合适的父类构造方法调用，否则编译失败。
5  在子类狗方法中，super（）调用父类构造时，必须放在构造函数第一行 。super（）只能在字楼构造方法中出现一次，不能和this同时出现。
6 代码块执行顺序：父类静态代码块>子类静态代码块>父类实例代码块>父类构造代码块>子类实例代码块>子类构造代码块  静态代码块只执行一次
////////////////////////////////////////////////////////////////////////////////////////////////////////////
方法重写只是
1 方法名相同 参数列表相同，返回值相同
注意：①被private final static修饰的不能重写 重写方法的子类访问权限必须大于等于父类的权限
②返回值其实也可以不同，但必须是父子类   ③构造方法不能重写
******************************
动态绑定或者运行时绑定：就是通过父类引用，调用这个父类和子类重写的构造方法，（结构是调用子类方法）
多态：当我们引用的对象不一样时，调用同一种重写方法，变现出来的行为不一样
父类类型 对象名=子类类型   对象名
向上转型调用不了子类的方法
//////////////////////////////////////
抽象类：
abstract修饰
1 abstract方法没有具体的实现
2 抽象类和普通类一样也有成员变量和方法。
3 抽象类不可以被实例化
4 普通类继承继承抽象类之后，必须重写抽象类中的所有构造方法
5 final和abstract不能同时存在，抽象方法不能被private    static修饰
-------------------------------------------
接口知识
interface
1接口当中的成员变量默认是public   static   final  成员方法默认是public   abstract
接口当中不可以有普通方法  但时Java8之后允许定义一个default方法，可以有具体的实现
2
*/